#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
为源代码文件添加版权声明的脚本
"""

import os
import glob

############################### 版权声明模板 ###############################
COPYRIGHT_HEADER = '''# -*- coding: utf-8 -*-
"""
{description}
"""

# Copyright (c) 2025 Lijiang
# Licensed under the MIT License
# See LICENSE file for details

'''

############################### 需要添加版权声明的文件模式 ###############################
FILE_PATTERNS = [
    '*.py',
    'ui/*.py',
    'core/*.py'
]

############################### 文件描述映射 ###############################
FILE_DESCRIPTIONS = {
    'main.py': '视频压缩工具主程序入口',
    'config.py': '力江视频压缩工具配置文件',
    'build.py': '构建脚本',
    'ui/main_window.py': '主窗口UI类',
    'ui/styles.py': '深色主题样式定义',
    'core/video_compressor.py': '视频压缩核心模块',
    'core/ffmpeg_compressor.py': '基于FFmpeg的视频压缩器',
    'core/file_handler.py': '文件处理工具类',
    'core/thread_pool_manager.py': '线程池管理器'
}

def add_copyright_to_file(file_path):
    """为单个文件添加版权声明"""
    try:
        with open(file_path, 'r', encoding='utf-8') as f:
            content = f.read()
        
        ############################### 检查是否已经有版权声明 ###############################
        if 'Copyright (c) 2025 Lijiang' in content:
            print(f"✓ {file_path} 已有版权声明")
            return
        
        ############################### 获取文件描述 ###############################
        filename = os.path.basename(file_path)
        description = FILE_DESCRIPTIONS.get(filename, filename)
        
        ############################### 如果文件以编码声明开头，保留它 ###############################
        if content.startswith('# -*- coding: utf-8 -*-'):
            lines = content.split('\n')
            ############################### 找到第一个非注释行 ###############################
            first_non_comment = 0
            for i, line in enumerate(lines):
                if line.strip() and not line.strip().startswith('#'):
                    first_non_comment = i
                    break
            
            ############################### 在编码声明后插入版权声明 ###############################
            new_content = '\n'.join(lines[:first_non_comment])
            new_content += '\n\n# Copyright (c) 2025 Lijiang\n'
            new_content += '# Licensed under the MIT License\n'
            new_content += '# See LICENSE file for details\n\n'
            new_content += '\n'.join(lines[first_non_comment:])
        else:
            ############################### 如果没有编码声明，添加完整的头部 ###############################
            new_content = COPYRIGHT_HEADER.format(description=description) + content
        
        ############################### 写回文件 ###############################
        with open(file_path, 'w', encoding='utf-8') as f:
            f.write(new_content)
        
        print(f"✓ 已为 {file_path} 添加版权声明")
        
    except Exception as e:
        print(f"✗ 处理 {file_path} 时出错: {e}")

def main():
    """主函数"""
    print("开始为源代码文件添加版权声明...")
    
    ############################### 处理所有匹配的文件 ###############################
    for pattern in FILE_PATTERNS:
        files = glob.glob(pattern)
        for file_path in files:
            if os.path.isfile(file_path) and file_path.endswith('.py'):
                add_copyright_to_file(file_path)
    
    print("版权声明添加完成！")

if __name__ == "__main__":
    main()
